package com.liu.algorithm.search.twoPointer;

import java.util.Arrays;

/**
 * 升序数组+两个下标 = 双指针
 * 给定一个已按照 非递减顺序排列  的整数数组 numbers ，请你从数组中找出两个数满足相加之和等于目标数 target 。
 * 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ，所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。
 * 你可以假设每个输入 只对应唯一的答案 ，而且你 不可以 重复使用相同的元素。
 */
public class Leetcode167 {
    public static void main(String[] args) {
        Leetcode167 obj = new Leetcode167();
        int[] nums = {5, 25, 75};
        int target = 100;
        System.out.println(Arrays.toString(nums));
        int[] aa = obj.twoSum(nums, target);
        System.out.println(Arrays.toString(aa));
    }

    public int[] twoSum(int[] numbers, int target) {
        int maxIndex = numbers.length;
        int left = 0;
        int right = maxIndex - 1;
        while (left < right) {
            if (numbers[left] + numbers[right] < target) {
                left++;
            } else if (numbers[left] + numbers[right] > target) {
                right--;
            } else {
                return new int[]{left + 1, right + 1};
            }
        }

        return new int[]{0, 0};
    }

}
